package com.study.bigevent.anno;

import com.study.bigevent.validation.StateVaildation;
import jakarta.validation.Constraint;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 自定义注解，用于校验字段的状态值。
 * 该注解可以应用于字段上，用于确保字段的值符合预期的状态。
 */
@Documented // 元注解
@Target({FIELD}) // 元注解 该注解只能应用于字段
@Retention(RUNTIME) // 元注解 在运行时使用
@Constraint(validatedBy = {StateVaildation.class}) // 指定提供校验规则的实现类
public @interface State {
//    校验失败后显示信息
    String message() default "{state参数的值只能是草稿和已发布}";
//    指定分组
    Class<?>[] groups() default {};
//    负载 获取state附加信息
    Class<? extends jakarta.validation.Payload>[] payload() default {};
}
